<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Android JNI 使用的数据结构JNINativeMethod详解 - bigapple88的专栏 - 博客频道 - CSDN.NET</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="Andoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要的区别是Andorid使用了一种Java 和 C 函数的映射表数组，并在其中描述了函数的参数和返回值。这个数组的类型是JNINativeMethod，定义如下：typedef" />
<script src="http://static.blog.csdn.net/scripts/jquery.js" type="text/javascript"></script>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/ad.js?v=1.1"></script>
<link rel="Stylesheet" type="text/css" href="http://static.blog.csdn.net/skin/dark1/css/style.css?v=1.1" />
<link id="RSSLink" title="RSS" type="application/rss+xml" rel="alternate" href="/bigapple88/rss/list" />
<link rel="shortcut icon" href="/favicon.ico" />
<link type="text/css" rel="stylesheet" href="http://static.blog.csdn.net/scripts/SyntaxHighlighter/styles/nobg_code.css" />
</head>
<body>
<script src="http://csdnimg.cn/pubnav/js/pub_topnav_2011.js"type="text/javascript"></script>

<div id="container">
<div id="header">
    <div class="header">
        <div id="blog_title">
            <h1><a href="/bigapple88">bigapple88的专栏</a></h1>
            <h2></h2>
            <div class="clear"></div>
        </div>
        <div class="clear"></div>
    </div>
</div>
<div id="navigator">
    <div class="navigator_bg"></div>
    <div class="navigator">
        <ul>
            <li id="btnContents"><a href="/bigapple88?viewmode=contents"><span><img src="http://static.blog.csdn.net/images/ico_list.gif">目录视图</span></a></li>
            <li id="btnView"><a href="/bigapple88?viewmode=list"><span><img src="http://static.blog.csdn.net/images/ico_summary.gif">摘要视图</span></a></li>
            <li id="btnRss"><a href="/bigapple88/rss/list"><span><img src="http://static.blog.csdn.net/images/ico_rss.gif">订阅</span></a></li>
</ul>
    </div>
</div>
<script type="text/javascript">
    var username = "bigapple88";
    var _blogger = username;
    var blog_address = "http://blog.csdn.net/bigapple88";
    var static_host = "http://static.blog.csdn.net";
    var currentUserName = "hutianxi1129";
</script>

<div id="body">
<div id="main">
<div class="main">
<div class="notice"> 

<a href="http://www.csdn.net/article/2013-07-09/2816160" target="_blank">
<font color=red>专访赵霏：应把握机会 HTML5游戏开发已臻成熟 </font></a>



&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

<a href="http://blog.csdn.net/blogdevteam/article/details/9226601" target="_blank"><font color=blue>2013年7月微软MVP当选名单揭晓
</font></a>

&nbsp;&nbsp;&nbsp;&nbsp;

<a href="http://blog.csdn.net/csdnproduct/article/details/9226265
"target="_blank">
<font color=red>CSDN博客频道自定义摘要、图片水印、热门标签等功能上线啦 


 </font></a>

&nbsp;&nbsp;&nbsp;&nbsp;

<a href="http://blog.csdn.net/blogdevteam/article/details/9136613"target="_blank">
<font color=red>CSDN博客第二期云计算最佳博主评选

 </font></a>


&nbsp;&nbsp;&nbsp;&nbsp;

<a href=""target="_blank">
<font color=blue>
 </font></a>




</div>
<div id="article_details" class="details">
    <div class="article_title">
    <span class="ico ico_type_Original"></span>
    <h3>
        <span class="link_title"><a href="/bigapple88/article/details/6756204">
        Android JNI 使用的数据结构JNINativeMethod详解
        </a></span>
    </h3>
</div>

        
    <div class="article_manage">
        <span class="link_categories">
        分类：
            <a href="/bigapple88/article/category/791361">android</a> 
        </span>
    <span class="link_postdate">2011-09-07 11:37</span>
    <span class="link_view" title="阅读次数">3738人阅读</span>
    <span class="link_comments" title="评论次数"><a href="#comments">评论</a>(2)</span>
    <span class="link_collect"><a href="javascript:void(0);" onclick="javascript:collectArticle('Android JNI 使用的数据结构JNINativeMethod详解','6756204');return false;" title="收藏">收藏</a></span>
    <span class="link_report"><a href="#report"  onclick="javascript:report(6756204,2);return false;" title="举报">举报</a></span>
    
</div>
<div class="tag2box"><a href='http://blog.csdn.net/tag/details.html?tag=jni' target=_blank>jni</a><a href='http://blog.csdn.net/tag/details.html?tag=android' target=_blank>android</a><a href='http://blog.csdn.net/tag/details.html?tag=%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84' target=_blank>数据结构</a><a href='http://blog.csdn.net/tag/details.html?tag=methods' target=_blank>methods</a><a href='http://blog.csdn.net/tag/details.html?tag=java' target=_blank>java</a><a href='http://blog.csdn.net/tag/details.html?tag=null' target=_blank>null</a></div>


    
<div id="article_content" class="article_content">

&nbsp;
<div class="cnt" id="blog_text">
<p>Andoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要的区别是Andorid使用了一种Java 和 C 函数的映射表数组，并在其中描述了函数的参数和返回&#20540;。这个数组的类型是JNINativeMethod，定义如下：</p>
<p><wbr></p>
<p>typedef struct {<br>
<wbr><wbr><wbr>const char* name;<br>
<wbr><wbr><wbr>const char* signature;<br>
<wbr><wbr><wbr>void* <wbr><wbr><wbr><wbr><wbr><wbr>fnPtr;<br>
} JNINativeMethod;</p>
<p>第一个变量name是Java中函数的名字。</p>
<p>第二个变量signature，用字符串是描述了函数的参数和返回&#20540;</p>
<p>第三个变量fnPtr是函数指针，指向C函数。</p>
<p><wbr></p>
<p>其中比较难以理解的是第二个参数，例如</p>
<p>&quot;()V&quot;</p>
<p>&quot;(II)V&quot;</p>
<p>&quot;(Ljava/lang/String;Ljava/lang/String;)V&quot;</p>
<p><wbr></p>
<p>实际上这些字符是与函数的参数类型一一对应的。</p>
<p>&quot;()&quot; 中的字符表示参数，后面的则代表返回&#20540;。例如&quot;()V&quot; 就表示void Func();</p>
<p>&quot;(II)V&quot; 表示 void Func(int, int);</p>
<p><wbr></p>
<p>具体的每一个字符的对应关系如下</p>
<p><wbr></p>
<p><strong>字符 <wbr><wbr><wbr><wbr>Java类型 <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>C类型</strong></p>
<p>V&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr>void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>void<br>
Z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr>jboolean&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>boolean<br>
I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr>jint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>int<br>
J&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<wbr><wbr><wbr><wbr><wbr><wbr><wbr>jlong&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>long<br>
D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr>jdouble&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>double<br>
F&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr>jfloat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>float<br>
B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr>jbyte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>byte<br>
C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr>jchar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>char<br>
S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr>jshort&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>short</p>
<p><wbr></p>
<p>数组则以&quot;[&quot;开始，用两个字符表示</p>
<p><wbr></p>
<p>[I&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>jintArray&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>int[]<br>
[F&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>jfloatArray&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr>float[]<br>
[B&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>jbyteArray&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>byte[]<br>
[C&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>jcharArray&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>char[]<br>
[S&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>jshortArray&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr>short[]<br>
[D&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>jdoubleArray <wbr><wbr><wbr><wbr>double[]<br>
[J&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>jlongArray&nbsp;&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>long[]<br>
[Z&nbsp;&nbsp;&nbsp; <wbr><wbr><wbr><wbr><wbr><wbr>jbooleanArray <wbr><wbr><wbr>boolean[]</p>
<p><wbr></p>
<p>上面的都是基本类型。如果Java函数的参数是class，则以&quot;L&quot;开头，以&quot;;&quot;结尾中间是用&quot;/&quot; 隔开的包及类名。而其对应的C函数名的参数则为jobject. 一个例外是String类，其对应的类为jstring</p>
<p><wbr></p>
<p>Ljava/lang/String; <wbr><wbr><wbr><wbr><wbr>String <wbr><wbr><wbr><wbr><wbr><wbr><wbr>jstring<br>
Ljava/net/Socket; <wbr><wbr><wbr><wbr><wbr>Socket <wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>jobject</p>
<p><wbr></p>
<p>如果JAVA函数位于一个嵌入类，则用$作为类名间的分隔符。</p>
<p>例如 &quot;(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z&quot;</p>
<p><br>
</p>
<p>下边是我在做串口通信时的代码：</p>
<p><pre name="code" class="cpp">static const char *classPathName = &quot;android/serialport/SerialPort&quot;;

//注意Ljava/io/FileDescriptor;最后的分号，刚开始做时漏了这个分号，查了两天时间，汗

static JNINativeMethod methods[] = {

  {&quot;open&quot;, &quot;(Ljava/lang/String;I)Ljava/io/FileDescriptor;&quot;, (void*)android_serialport_SerialPort_open },

  {&quot;close&quot;, &quot;()V&quot;, (void*)android_serialport_SerialPort_close },

};


/*

 * Register several native methods for one class.

 */

static int registerNativeMethods(JNIEnv* env, const char* className,
    JNINativeMethod* gMethods, int numMethods)
{
    jclass clazz;

    clazz = (*env)-&gt;FindClass(env, className);
    if (clazz == NULL)
        return JNI_FALSE;

    if ((*env)-&gt;RegisterNatives(env, clazz, gMethods, numMethods) &lt; 0)
    {
	LOGE(&quot;register nativers error&quot;);
        return JNI_FALSE;
    }

    return JNI_TRUE;
}



/*

 * Register native methods for all classes we know about.

 *

 * returns JNI_TRUE on success.

 */

static int registerNatives(JNIEnv* env)

{

  if (!registerNativeMethods(env, classPathName,

                 methods, sizeof(methods) / sizeof(methods[0]))) {

    return JNI_FALSE;

  }

  return JNI_TRUE;

}

/*

 * This is called by the VM when the shared library is first loaded.

 */

jint JNI_OnLoad(JavaVM* vm, void* reserved)
{
    JNIEnv* env = NULL;
    jint result = -1;

    LOGI(&quot;Entering JNI_OnLoad\n&quot;);

    if ((*vm)-&gt;GetEnv(vm, (void**) &amp;env, JNI_VERSION_1_4) != JNI_OK)
        goto bail;

    assert(env != NULL);

    if (!registerNatives(env))
        goto bail;

    /* success -- return valid version number */
    result = JNI_VERSION_1_4;

bail:
    LOGI(&quot;Leaving JNI_OnLoad (result=0x%x)\n&quot;, result);
    return result;
}
</pre></p>
<p><br>
</p>
android_serialport_SeriaPort_open的函数原型为：
<p>static jobject android_serialport_SerialPort_open(JNIEnv *env, jobject thiz, jstring path, jint baudrate)；<br>
</p>
<p>static void android_serialport_SerialPort_close(JNIEnv *env, jobject thiz)；<br>
</p>
<p>另外还要注意一点，如果是C&#43;&#43;,使用的是env, 如果是C,使用的是(*env)，最好参考相应系统中的代码来写。</p>
</div>

</div>

<div class="share_buttons" id="sharePanel"></div>
<!--192.168.100.34-->
<div class="article_next_prev">
    <li class="prev_article"><span>上一篇：</span><a href="/bigapple88/article/details/6724788">关于韦东山书上的裸机程序在mini2440上的运行</a></li>
    <li class="next_article"><span>下一篇：</span><a href="/bigapple88/article/details/6836533">onInterceptTouchEvent和onTouchEvent调用时序(转)</a></li>
</div>


            <div id="digg" ArticleId="6756204">
            <dl id="btnDigg" class="digg digg_enable">
                <dt>顶</dt>
                <dd>4</dd>
            </dl>
            <dl id="btnBury" class="digg digg_enable">
                <dt>踩</dt>
                <dd>0</dd>
            </dl>
        </div>

</div>
<div id="ad_cen">
<script type="text/javascript" >BAIDU_CLB_SLOT_ID = "117306";</script>
<script type="text/javascript" src="http://cbjs.baidu.com/js/o.js"></script>
</div>
<script type="text/javascript">
    //new Ad(4, 'ad_cen');
</script>
<div id="comment_title" class="panel_head">查看评论<a name="comments"></a></div>
<div id="comment_list"></div>
<div id="comment_bar"></div>
<div id="comment_form"></div>
<div class="announce">* 以上用户言论只代表其个人观点，不代表CSDN网站的观点或立场<a name="reply"></a><a name="quote"></a></div>
<script type="text/javascript">
    var fileName = '6756204';
    var commentscount = 2;
    var islock = false
</script>
<script type="text/javascript" src="http://static.blog.csdn.net/scripts/comment.js"></script>
<div id="ad_bot"></div>
<script type="text/javascript">
    new Ad(5, 'ad_bot');
</script>
<div id="report_dialog"></div>

<div id="d-top" style="display:none;">
<a id="d-top-a" href="#" title="回到顶部">
<img src="http://static.blog.csdn.net/images/top.png" alt="TOP" /></a>
</div>
<script type="text/javascript">
    $(function(){
        var d_top=$('#d-top');
        document.onscroll=function(){
            var scrTop=(document.body.scrollTop||document.documentElement.scrollTop);
            if(scrTop>500){
                d_top.show();
            }else{
                d_top.hide();
            }
        }
        $('#d-top-a').click(function(){
            scrollTo(0,0);
            this.blur();
            return false;
        });
    });
</script>

<div class="clear"></div>
</div>
</div>

<div id="side">
<div class="side">
<div id="panel_Profile" class="panel">
<ul class="panel_head"><span>个人资料</span></ul>
<ul class="panel_body profile">
<div id="blog_userface">
    <a href="http://my.csdn.net/bigapple88" target="_blank">
    <img src="http://avatar.csdn.net/B/2/9/1_bigapple88.jpg" title="访问我的空间" style="max-width:90%"/>
    </a>
    <br />
    <span><a href="http://my.csdn.net/bigapple88" class="user_name" target="_blank">bigapple88</a></span>
</div>
<div class="interact">
<a href="javascript:void(0);" class="attent" id="span_add_follow" title="[加关注]"></a>
<a href="javascript:void(0);" class="letter" onclick="loginto(1)" title="[发私信]"></a>
</div>
<div id="blog_medal">
</div>
<ul id="blog_rank">
    <li>访问：<span>111255次</span></li>
    <li>积分：<span>1787分</span></li>
    <li>排名：<span>第4871名</span></li>
</ul>
<ul id="blog_statistics">
    <li>原创：<span>39篇</span></li>
    <li>转载：<span>142篇</span></li>
    <li>译文：<span>0篇</span></li>
    <li>评论：<span>44条</span></li>
</ul>
</ul>
</div>

<div class="panel">
<ul class="panel_body" style="padding:0;">
<script type="text/javascript" src="http://cbjs.baidu.com/js/m.js"></script> 
<script type="text/javascript"> 
BAIDU_CLB_preloadSlots("724643","117306"); 
</script>
<script type="text/javascript">BAIDU_CLB_fillSlot("724643");</script> 
</ul>
</div>
<div class="panel" id="panel_Search">
    <ul class="panel_head"><span>文章搜索</span></ul>
    <ul class="panel_body">
        <form id="frmSearch" action="http://so.csdn.net/search" class="form_search" target="_blank">
        <span><input id="inputSearch" type="text" class="blogsearch" title="请输入关键字" /></span>
        <input id="btnSubmit" type="submit" value="搜索" title="search in blog" />
        <input type="hidden" name="q" id="inputQ" />
        <input type="hidden" name="t" value="blog" />
        <a id="btnSearchBlog" target="_blank"></a>
        </form>
    </ul>
</div><div id="panel_Category" class="panel">
<ul class="panel_head"><span>文章分类</span></ul>
<ul class="panel_body">
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/791361">android</a><span>(57)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/839548">android-framework</a><span>(10)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/809004">android-Media</a><span>(9)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/810066">android-service</a><span>(3)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/811018">android-多线程</a><span>(3)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/809234">android-通讯录</a><span>(2)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/671518">C/C++</a><span>(18)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/671521">DRM</a><span>(1)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/671520">fbreader</a><span>(6)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/683394">framebuffer</a><span>(2)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/839246">java</a><span>(1)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/689888">jpeg</a><span>(0)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/687742">jpeg png</a><span>(5)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/671519">linux</a><span>(4)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/689889">png</a><span>(0)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/671426">QT</a><span>(3)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/686033">windows</a><span>(33)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/686938">音视频编解码</a><span>(2)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/862252">S3C2440</a><span>(3)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/1209326">uboot</a><span>(2)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/1236457">其它</a><span>(1)</span>
</li>
<li>
<a href="http://blog.csdn.net/bigapple88/article/category/1358336">驱动</a><span>(0)</span>
</li>
</ul>
</div><div id="panel_Archive" class="panel">
<ul class="panel_head"><span>文章存档</span></ul>
<ul class="panel_body">
<div id="archive_list">
<!--归档统计-->
<li><a href="http://blog.csdn.net/bigapple88/article/month/2013/03">2013年03月</a><span>(2)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2012/11">2012年11月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2012/10">2012年10月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2012/09">2012年09月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2012/08">2012年08月</a><span>(2)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2012/06">2012年06月</a><span>(2)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2012/02">2012年02月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2012/01">2012年01月</a><span>(2)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/12">2011年12月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/09">2011年09月</a><span>(2)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/08">2011年08月</a><span>(3)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/07">2011年07月</a><span>(9)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/06">2011年06月</a><span>(6)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/05">2011年05月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/04">2011年04月</a><span>(21)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/03">2011年03月</a><span>(39)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/02">2011年02月</a><span>(6)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2011/01">2011年01月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/12">2010年12月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/11">2010年11月</a><span>(4)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/10">2010年10月</a><span>(3)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/09">2010年09月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/08">2010年08月</a><span>(1)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/07">2010年07月</a><span>(8)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/06">2010年06月</a><span>(5)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/05">2010年05月</a><span>(29)</span></li><li><a href="http://blog.csdn.net/bigapple88/article/month/2010/04">2010年04月</a><span>(25)</span></li>
</div>
</ul>
</div>
<div id="hotarticls" class="panel">
<ul class="panel_head"><span>阅读排行</span></ul>
<ul class="panel_body itemlist">
<li>
<a href="/bigapple88/article/details/6251386" title="ContentResolver">ContentResolver</a><span>(4867)</span>
</li>
<li>
<a href="/bigapple88/article/details/6756204" title="Android JNI 使用的数据结构JNINativeMethod详解">Android JNI 使用的数据结构JNINativeMethod详解</a><span>(3738)</span>
</li>
<li>
<a href="/bigapple88/article/details/5644418" title="使用libpng,libjpeg从文件读取和从内存读取2中方式的实现">使用libpng,libjpeg从文件读取和从内存读取2中方式的实现</a><span>(3389)</span>
</li>
<li>
<a href="/bigapple88/article/details/6235171" title="Android画图学习总结">Android画图学习总结</a><span>(2857)</span>
</li>
<li>
<a href="/bigapple88/article/details/6285411" title="android播放器（music player）源码分析1-Service，Binder，ServiceConnection">android播放器（music player）源码分析1-Service，Binder，ServiceConnection</a><span>(2392)</span>
</li>
<li>
<a href="/bigapple88/article/details/5479970" title="扩展VMware 虚拟机硬盘容量，不需要重装系统">扩展VMware 虚拟机硬盘容量，不需要重装系统</a><span>(2228)</span>
</li>
<li>
<a href="/bigapple88/article/details/6549215" title="drawable(hdpi,ldpi,mdpi) 的区别 （转载）">drawable(hdpi,ldpi,mdpi) 的区别 （转载）</a><span>(2205)</span>
</li>
<li>
<a href="/bigapple88/article/details/5601295" title="bit、byte、位、字节、汉字的关系">bit、byte、位、字节、汉字的关系</a><span>(2045)</span>
</li>
<li>
<a href="/bigapple88/article/details/5625742" title="图像色深(bit depth)和位深度的区别">图像色深(bit depth)和位深度的区别</a><span>(1934)</span>
</li>
<li>
<a href="/bigapple88/article/details/5693489" title="malloc失败">malloc失败</a><span>(1922)</span>
</li>
</ul>
</div>
<div id="hotarticls2" class="panel">
<ul class="panel_head"><span>评论排行</span></ul>
<ul class="panel_body itemlist">
<li>
<a href="/bigapple88/article/details/6268248" title="Android 实例剖析之 notepad">Android 实例剖析之 notepad</a><span>(6)</span>
</li>
<li>
<a href="/bigapple88/article/details/6285424" title="android播放器（music player）源码分析2（BaseExpandableListAdapter, SimpleCursorTreeAdapter">android播放器（music player）源码分析2（BaseExpandableListAdapter, SimpleCursorTreeAdapter</a><span>(5)</span>
</li>
<li>
<a href="/bigapple88/article/details/6251386" title="ContentResolver">ContentResolver</a><span>(3)</span>
</li>
<li>
<a href="/bigapple88/article/details/5644418" title="使用libpng,libjpeg从文件读取和从内存读取2中方式的实现">使用libpng,libjpeg从文件读取和从内存读取2中方式的实现</a><span>(3)</span>
</li>
<li>
<a href="/bigapple88/article/details/6292390" title="给RatingBar改图片">给RatingBar改图片</a><span>(2)</span>
</li>
<li>
<a href="/bigapple88/article/details/6592296" title="android音乐播放器Service的生命周期分析">android音乐播放器Service的生命周期分析</a><span>(2)</span>
</li>
<li>
<a href="/bigapple88/article/details/5693489" title="malloc失败">malloc失败</a><span>(2)</span>
</li>
<li>
<a href="/bigapple88/article/details/5605384" title="教你如何使用libpng显示png图片">教你如何使用libpng显示png图片</a><span>(2)</span>
</li>
<li>
<a href="/bigapple88/article/details/6331474" title="可拖拽的listView">可拖拽的listView</a><span>(2)</span>
</li>
<li>
<a href="/bigapple88/article/details/6756204" title="Android JNI 使用的数据结构JNINativeMethod详解">Android JNI 使用的数据结构JNINativeMethod详解</a><span>(2)</span>
</li>
</ul>
</div>
<div id="homepageArticles" class="panel">
<ul class="panel_head"><span>推荐文章</span></ul>
<ul class="panel_body" id="ad_commend"></ul>
</div>
<script type="text/javascript">
 new Ad(12, 'ad_commend');
</script><div id="newcomments" class="panel">
<ul class="panel_head"><span>最新评论</span></ul>
<ul class="panel_body itemlist">
    <li>
    <a href="/bigapple88/article/details/5625742#comments">图像色深(bit depth)和位深度的区别</a>
    <p style="margin:0px;"><a href="/wdhhdw1234" class="user_name">wdhhdw1234</a>:
呀 你是做什么的？上面讲的 我感觉看了不是很清楚“一幅彩色图像RGB3个温良的象素位数分别为4,4,...
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/6592296#comments">android音乐播放器Service的生命周期分析</a>
    <p style="margin:0px;"><a href="/zhongyuanceshi" class="user_name">zhongyuanceshi</a>:
分别把startService，bindService语句，注释下，怎么歌曲Tab，都没有界面了，也...
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/5586634#comments">jpeglib使用指南</a>
    <p style="margin:0px;"><a href="/wuyihua358" class="user_name">wuyihua358</a>:
有一点疑惑，一直不理解上面的第三点解压缩是什么意思。jpeg不是有损压缩吗，那怎么还能解压缩呢。然后...
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/6592296#comments">android音乐播放器Service的生命周期分析</a>
    <p style="margin:0px;"><a href="/liushuaikobe" class="user_name">liushuaikobe</a>:
分析的有点乱。。。
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/6251898#comments">Adapter 中getView使用注意点</a>
    <p style="margin:0px;"><a href="/beibeixiao" class="user_name">beibeixiao</a>:
好棒哦，我的问题纵欲解决了，太感谢你的分享了。。
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/6756204#comments">Android JNI 使用的数据结构JNINativeMethod详解</a>
    <p style="margin:0px;"><a href="/wubaozhang2009" class="user_name">wubaozhang2009</a>:
呵呵 很有用
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/6409559#comments">android线程 Handler Message Queue AsyncTask</a>
    <p style="margin:0px;"><a href="/h452478045" class="user_name">h452478045</a>:
嗯  很强大 资料丰富 谢谢楼主了
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/5644418#comments">使用libpng,libjpeg从文件读取和从内存读取2中方式的实现</a>
    <p style="margin:0px;"><a href="/ljclx1748" class="user_name">ljclx1748</a>:
你用的是6b还是8？？？
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/6251386#comments">ContentResolver</a>
    <p style="margin:0px;"><a href="/Leo_chl" class="user_name">Leo_chl</a>:
顶
    </p>
    </li>
    <li>
    <a href="/bigapple88/article/details/6285411#comments">android播放器（music player）源码分析1-Service，Binder，ServiceConnection</a>
    <p style="margin:0px;"><a href="/zby2155" class="user_name">zby2155</a>:
你好，这个音乐播放器，不知道是不是 google music player 这个播放器，网址是：ht...
    </p>
    </li>
</ul>
</div>
</div>
<div class="clear"></div>
</div>

<div class="clear"></div>
</div>

<script type="text/javascript" src="http://static.blog.csdn.net/scripts/newblog.min.js?v=1.1"></script>
<script type="text/javascript" src="http://medal.blog.csdn.net/showblogmedal.ashx?blogid=816227"></script>

<script type="text/javascript">
document.write('<script type="text/javascript" src="http://csdnimg.cn/pubfooter/js/publib_footer.js?' + Math.floor(new Date()/120000).toString(36) + '="></'+'script>');
</script>

<script type="text/javascript">document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</script>
<script type="text/javascript" src="http://www.csdn.net/ui/scripts/Csdn/counter.js?v=1"></script>


<script type="text/javascript" src="http://ad.csdn.net/scripts/ad-blog.js"></script>

<script type="text/javascript" src="http://zz.csdn.net/js/count.js"></script>

</div>
</body>
</html>